"""
集合：set 是python中的数据结构
1. 无序性：集合中的元素没有固定的顺序，所以不能通过索引来访问其中的元素
2. 唯一性： 集合中的元素必须是唯一的，不允许重复，尝试添加没用
3. 可变性： 集合是可以改变的，可以添加或删除其中的元素
"""
#无序：在集合的底层，python引入的是哈希方法来存储数据，哈希主要的目的是快速的查找，添加或者删除元素，并不保留顺序
# a = {10,20,30,40,50}
# a.add(60)
# print(a)

#保留顺序   sorted   增加
# a = {10,20,30,40,50}
# a.add(60)
# print(sorted(a))

# 集合是可变的


# 删除 remove: 删除指定的元素

# a = {10,20,30,40,50}
# # a.remove(20)
# a.remove(80)  # KeyError: 80
# print(sorted(a))


#删除随机的元素
# a = {10,20,30,40,50}
# a.pop()
# print(a)

# a = {10,20,30,40,50}
# a.clear()
# print(a)  #返回一个空的集合


#修改元素
# union
#将多个集合合并成一个集合，原集合没有变化
#返回了一个新的集合，包含两个集合中的所有的元素，并自动去重
#原集合不会修改，因为union()返回的是一个新的集合

# a = {10,20,30,40,50}
# b = a.union({10,20,30,40,50,60})
# print(sorted(b))

#update
#用于将指定的元素添加到集合中
# add只能添加一个，update可以添加多个
# 原地修改，不需要返回一个新的集合
# 可以从多个对象进行迭代更新

# a = {10,20,30}
# b = {30,40,50}
# a.update(b)  # 将 b 元素添加到 a 中
# print(sorted(a))


# a = {10,20,30,40}
#
# a.update([30,40,50,60],(70,80))
# print(sorted(a))


#在集合中，运算符的使用

a = {'安琪拉','李白','澜','镜','露娜','孙尚香','鲁班大师','廉颇'}
b = {'夏洛特','镜','安琪拉','李白','关羽','孙尚香'}

# print(a + b )  #异常： 在python中，集合不支持使用+ 来进行合并
# print(a - b)  # 求 A - B 的差集  返回A
# print(b - a)  # 求 B - A 的差集，返回 B
# print(a & b)   # 求A 和 B 的交集
# print(a | b)   # 求 a 和 B 的并集
print(a ^ b)  #对称差集：属于A 或B的元素，但是不包括属于二者的元素